Mysql |
您所在的位置:网站首页 › case when函数用法 › Mysql |
目录 13.4 流程函数 -(If) 4.1 If函数语法格式 4.2 IFNULL(表达式,用什么值代替) 4.3 NULLIF() 函数的使用 4.4 ISNULL()函数的使用 4.5 leetcode练习题 13.5 流程函数 -(CASE WHEN) 13.5.1 CASE WHEN 条件表达式格式 15.5.2 update与 case when 15.5.3 练习题1 15.5.4 练习题2 15.5.5 练习题3-行转列 15.5.6 牛客练习题 15.5.7 LeetCode练习题 13.4 流程函数 -(If) 4.1 If函数语法格式 IF(expr1,expr2,expr3)解释: 如果表达式expr1=true(expr1 0 and expr1 NULL),返回expr2,否则返回expr3,IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。 常用示例: expr1参数为1,结果为真,返回正确 select if(1,'正确','错误');结果: IFNULL(expr1,expr2),如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值。 SELECT IFNULL(NULL,'B'); -- 输出结果:B SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO 4.3 NULLIF() 函数的使用NULLIF(expr1,expr2),如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值。 SELECT NULLIF('A','A'); -- 输出结果:null SELECT NULLIF('A','B'); -- 输出结果:A 4.4 ISNULL()函数的使用ISNULL(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。 4.5 leetcode练习题SQL176 第二高的薪水 13.5 流程函数 -(CASE WHEN) 13.5.1 CASE WHEN 条件表达式格式1. 格式1:简单case函数 **简单CASE函数** CASE 条件参数名称 WHEN 参数值1 THEN '显示值1' WHEN 参数值2 THEN '显示值2' ... ELSE '显示其他值' END2. 格式2:case搜索函数 CASE WHEN condition THEN result [WHEN...THEN...] ELSE result ENDcondition是一个返回布尔类型的表达式, 如果表达式返回true,则整个函数返回相应result的值, 如果表达式皆为false,则返回ElSE后result的值, 如果省略了ELSE子句,则返回NULL。 15.5.2 update与 case when当我们有时候要更新 数据库中 同一个字段 根据不同情况更新不同的值,可以用 update Table set field = (case XX when XXXX then XXX when xxxx then xxxxxx else xxxx end) 15.5.3 练习题1数据库 drop table if exists `students`; create table students ( stu_code varchar(10) null, stu_name varchar(10) null, stu_sex int null, stu_score int null ); # 其中stu_sex字段,0表示男生,1表示女生。 INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xm', '小明', 0, 88); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xl', '夏磊', 0, 55); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xf', '晓峰', 0, 45); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xh', '小红', 1, 89); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xn', '小妮', 1, 77); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xy', '小一', 1, 99); INSERT INTO students (stu_code, stu_name, stu_sex, stu_score) VALUES ('xs', '小时', 1, 45);场景1-不同状态下展示为不同的值 题目: 现在学校想要根据学生分数(stu_score)划分等级,score=60返回及格,score>=80返回优秀。请返回学生的分数(stu_score)和等级(score_cut) 根据示例,你的查询应返回以下结果: SQL代码: select stu_score, case when stu_score=60 and stu_score=80 then '优秀' end as 'score_cut' from students;场景2- 统计不同状态下的值 现老师要统计班中,有多少男同学,多少女同学,并统计男同学中有几人及格,女同学中有几人及格,要求用一个SQL输出结果。其中stu_sex字段,0表示男生,1表示女生。 根据示例,你的查询应返回以下结果: 场景3- update与case when相结合 请你编写一个解决方案来交换所有的 '男' 和 '女' (即,将所有 '女' 变为 '男' ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表。其中stu_sex字段,0表示男生,1表示女生。 注意,你必须仅使用一条 update 语句,且 不能 使用 select 语句。 根据示例,你的查询应返回以下结果: 数据库 drop table if exists `energy_test`; drop table if exists `p_price`; -- auto-generated definition create table energy_test ( e_code varchar(2) null, e_value decimal(5, 2) null, e_type int null ); # 其中,E_TYPE表示能耗类型,0表示水耗,1表示电耗,2表示热耗 INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('北京', 28.50, 0); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('北京', 23.50, 1); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('北京', 28.12, 2); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('北京', 12.30, 0); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('北京', 15.46, 1); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('上海', 18.88, 0); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('上海', 16.66, 1); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('上海', 19.99, 0); INSERT INTO energy_test (e_code, e_value, e_type) VALUES ('上海', 10.05, 0); -- auto-generated definition create table p_price ( p_price decimal(5, 2) null comment '价格', p_level int null comment '等级', p_limit int null comment '阈值' ) comment '电能耗单价表'; INSERT INTO p_price (p_price, p_level, p_limit) VALUES (1.20, 0, 10); INSERT INTO p_price (p_price, p_level, p_limit) VALUES (1.70, 1, 30); INSERT INTO p_price (p_price, p_level, p_limit) VALUES (2.50, 2, 50);energy_test p_price 场景1 - 配合聚合函数做统计 现要求统计各个城市,总共使用了多少水耗、电耗、热耗,使用一条SQL语句输出结果 有能耗表如下:其中,E_TYPE表示能耗类型,0表示水耗,1表示电耗,2表示热耗 根据示例,你的查询应返回以下结果: 场景2-使用子查询 根据城市用电量多少,计算用电成本。假设电能耗单价分为三档,根据不同的能耗值,使用相应价格计算成本。 P_limit为每个档次的上限。当能耗值(e_value)小于10时,使用P_LEVEL=0时的P_PRICE的值,能耗值大于10小于30使用P_LEVEL=1时的P_PRICE的值… 根据示例,你的查询应返回以下结果: 数据库 drop table if exists `user_col_comments`; -- auto-generated definition create table user_col_comments ( column_name varchar(50) null comment '列名', comment varchar(100) null comment '列的备注' ); INSERT INTO user_col_comments (column_name, comment) VALUES ('SHI_SHI_CODE', '设施编号'); INSERT INTO user_col_comments (column_name, comment) VALUES ('SHUI_HAO', '水耗'); INSERT INTO user_col_comments (column_name, comment) VALUES ('RE_HAO', '热耗'); INSERT INTO user_col_comments (column_name, comment) VALUES ('YAN_HAO', '盐耗'); INSERT INTO user_col_comments (column_name, comment) VALUES ('OTHER', '其他');问题:将上表的行列进行转换显示 根据示例,你的查询应返回以下结果: SQL26 - 计算25岁以上和以下的用户数量 15.5.7 LeetCode练习题LeetCode_1873. 计算特殊奖金 LeetCode_627. 变更性别 LeetCode_608. 树节点 LeetCode_1393. 股票的资本损益 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |